import SwiftUI
import Lottie

// 创建一个 Lottie 动画视图
struct LottieView: UIViewRepresentable {
    var filename: String
    var loop: Bool = false
    var speed: CGFloat = 1.0
    @Binding var isPlaying: Bool // 用来外部控制是否播放动画
    var onCompletion: (() -> Void)? // 动画完成后的回调闭包
    
    // 使用状态来控制动画的播放
    
    // 创建并配置 Lottie 动画视图
    func makeUIView(context: Context) -> UIView {
        let view = UIView()
        let animationView = LottieAnimationView(name: filename)
        
        // 设置动画的 loopMode 和 speed
        animationView.loopMode = loop ? .loop : .playOnce
        animationView.animationSpeed = speed
        animationView.translatesAutoresizingMaskIntoConstraints = false
        
        // 添加到父视图
        view.addSubview(animationView)
        
        // 设置动画视图的布局约束
        NSLayoutConstraint.activate([
            animationView.topAnchor.constraint(equalTo: view.topAnchor),
            animationView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
            animationView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
            animationView.trailingAnchor.constraint(equalTo: view.trailingAnchor)
        ])
        return view
    }
    
    // 更新 UIView，如果有状态变化时触发
    func updateUIView(_ uiView: UIView, context: Context) {
        // 这里可以实现更新逻辑，如果需要控制动画的状态
        if let animationView = uiView.subviews.first(where: { $0 is LottieAnimationView }) as? LottieAnimationView {
            if isPlaying {
                animationView.play { finished in
                    if finished {
                        isPlaying = false
                        // 动画完成后触发回调
                        self.onCompletion?()
                    }
                }
            } else {
                // 如果需要在动画停止时处理，可以做相应的操作
            }
        }
    }
}
